var ws;
var SocketCreated = false;

function ToggleConnectionClicked() {
    if (SocketCreated && (ws.readyState == 0 || ws.readyState == 1)) {
        ws.close();
    } else {
        Log("Соединение с сервером...");
        try {
            ws = new WebSocket("ws://" + document.getElementById("Connection").value);
            SocketCreated = true;
        } catch (ex) {
            Log(ex, "ERROR");
            return;
        }
        document.getElementById("ToggleConnection").innerHTML = "Отключиться";
        ws.onopen = WSOpen;
        ws.onmessage = WSMessage;
        ws.onclose = WSClose;
        ws.onerror = WSError;
    }
};

function WSOpen() {
    Log("Соединение установлено.", "OK");
    $("#SendDataContainer").show("slow");
};

//<**********************************
//*** Server -> Client ***
// В случае авторизации {type: ChatAuth, login: nickname}
// В случае отсоединения {type: ChatUserDisconnect, login: nickname}
// Обычное сообщение {type: ChatMessage, login: nickname, message: содержимое сообщения}
//**********************************>
function WSMessage(event) {
	var obj = JSON.parse(event.data);
	if(obj.type == "ChatAuth")
	{
		Log(obj.login + " присоединился.");
	}
	if(obj.type == "ChatMessage")
	{
		Log('"'+obj.login+'": '+obj.message);
	}
	if(obj.type == "ChatUserDisconnect")
	{
		Log(obj.login + " отсоединился.");
	}
	else
	{	
		Log(event.data);
	}
};

function WSClose() {
    Log("Соединение закрыто.", "ERROR");
    document.getElementById("ToggleConnection").innerHTML = "Подключиться";
    $("#SendDataContainer").hide("slow");
};

function WSError() {
    Log("Ошибка WebSocket.", "ERROR");
};

//<**********************************
//*** Client -> Server ***
// Сообщения любого типа!!!
// Для авторизации {"type":"ChatMessage","message":"neshta"}
//**********************************>
function SendDataClicked() {
if (document.getElementById("DataToSend").value != "") {		
    ws.send(document.getElementById("DataToSend").value);
    document.getElementById("DataToSend").value = "";
    }
};

function Log(Text, MessageType) {
    if (MessageType == "OK") Text = "<span style='color: green;'>" + Text + "</span>";
    if (MessageType == "ERROR") Text = "<span style='color: red;'>" + Text + "</span>";
    document.getElementById("LogContainer").innerHTML += Text + "<br />";
    var LogContainer = document.getElementById("LogContainer");
    LogContainer.scrollTop = LogContainer.scrollHeight;
};


$(document).ready(function () {
    $("#SendDataContainer").hide();
    var WebSocketsExist = true;		// web socket существует
    try {
        var tst = new WebSocket("ws://localhost:8181/test");
    } catch (ex) {
        WebSocketsExist = false;
    }

    if (WebSocketsExist) {
        Log("Ваш браузер поддерживает Websockets.", "OK");
        document.getElementById("Connection").value = "localhost:8181/test";
    } else {
        Log("Ваш браузер не поддерживает Websockets.", "ERROR");
        document.getElementById("ToggleConnection").disabled = true;
    }
});